package com.Service.advice;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

/**
 * @author Cheng-02
 * @version V1.0
 * @Package com.Service.advice
 * @date 2024/4/23 下午9:08
 */
/*
 * 1.定义方法存储增强代码
 *   具体定义几个方法，根据插入的位置决定
 * 2.使用注解配置，指定插入目标方法的位置
 *   前置 ：Before
 *   后置 ：AfterReturning
 *   异常 :AfterThrowing
 *   最后 :After
 *   环绕 :Around
 *try{
 * 前置
 * 目标方法
 * 后置
 * }
 * catch{
 * 异常
 * }
 * finally{
 * 最后
 * }
 *
 * 3.配置切点表达式[选中插入的方法]
 *4.补全注解 @component
 * 配置切面@Aspect = 切点+切面
 *
 * */
@Component
@Aspect
public class LoginAdvice {

    @Before("execution(* com.Service.Impl.*.*(..))")
    public void start() {
        System.out.println("方法结束了");
    }

    @After("execution(* com.Service.Impl.*.*(..))")
    public void after() {
        System.out.println("方法结束了");
    }

    @AfterThrowing("execution(* com.Service.Impl.*.*(..))")
    public void error() {
        System.out.println("方法报错了");
    }
}
